Chapitre 5 Les opérations sur données attributaires

Dans ce chapitre, nous allons utiliser les packages suivants :

library(sf)
library(tidyverse)
library(mapview)

Nous utiliserons les contours des territoires de la France métropolitaine issus de Admin Express.

load("data/admin_express.RData")

Prenons la table des départements, cette table est un spatial dataframe.

class(departements_geo)
[1] "sf"         "data.frame"

On peut utiliser mapview() pour voir ce jeu de données.

mapview(departements_geo, zcol = "NOM_DEP", legend = F)

Comme évoqué dans la partie 1, on peut tout à fait appliquer sur un spatial dataframe les verbes du tidyverse comme sur un dataframe, notamment utiliser les verbes de dplyr.

Nous pouvons à partir de cette table filtrer les départements d’une certaine région.

departements_geo %>%
  filter(INSEE_REG == 52)
# A tibble: 5 x 6
  ID      NOM_DEP INSEE_DEP INSEE_REG     AREA                     geometry
  <fct>   <fct>   <fct>     <fct>        [m^2]           <MULTIPOLYGON [m]>
1 DEP000… LOIRE-… 44        52        6996715… (((276339 6716135, 276289 6…
2 DEP000… MAINE-… 49        52        7160501… (((419761 6744627, 419761 6…
3 DEP000… MAYENNE 53        52        5207890… (((398109 6788330, 398104 6…
4 DEP000… SARTHE  72        52        6238251… (((463283 6791785, 463279 6…
5 DEP000… VENDEE  85        52        6760370… (((293744 6673579, 293709 6…

Nous pouvons ne sélectionner que quelques variables

departements_geo %>%
  select(INSEE_DEP) %>%
  glimpse()
Observations: 96
Variables: 2
$ INSEE_DEP <fct> 01, 2B, 02, 2A, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12…
$ geometry  <MULTIPOLYGON [m]> MULTIPOLYGON (((839096 6563..., MULTIPOLY…

A noter que par défaut, un spatial dataframe gardera toujours la géométrie.

Nous pouvons agréger nos données.

regions <- departements_geo %>%
  group_by(INSEE_REG) %>%
  summarise(AREA = sum(AREA))

glimpse(regions)
Observations: 13
Variables: 3
$ INSEE_REG <fct> 11, 24, 27, 28, 32, 44, 52, 53, 75, 76, 84, 93, 94
$ AREA      [m^2] 12064378723 [m^2], 39470054055 [m^2], 47980260943 [m^2…
$ geometry  <GEOMETRY [m]> POLYGON ((670084 6886723, 6..., POLYGON ((690…

On voit que summarise permet non seulement d’agréger nos données attributaires, mais également les géométries.

Cette opération permet donc de retrouver directement notre carte des régions métropolitaines.

mapview(regions, zcol = "INSEE_REG", legend = F)

On peut enfin effectuer des jointures attributaines sur nos données en utilisant les verbes à deux dataframe de dplyr.

Par exemple on va pouvoir récupérer, dans la table regions_geo de notre RData, les libellées de nos régions.

regions <- regions %>%
  left_join(regions_geo %>%
    st_drop_geometry(),
  by = c("INSEE_REG")
  )

Nous pouvons alors utiliser ce nouvelle attribut pour nos cartes.

mapview(regions, zcol = "NOM_REG", legend = F)

Attention, quand vous réalisez une jointure entre deux tables de données :

X %>% ZZ_join(Y)

La composante spatiale n’est conservée que pour la première table X.